package main

import "fmt"

func main() {
	fmt.Println("Byte Rune 类型")
	s := "Hello, This is Go! 我们一起学习GO"
	// len是求出byte字节的数量
	n := len(s)
	fmt.Print("输出字符串长度")
	fmt.Println(n)
	// 遍历字符串
	translateString(s)
	// 转换字符串
	convertByteString(s, 'B', 6)
	convertRuneString(s, 'A', 6)
}

// 字符串数据转换
func translateString(str string) {
	// 遍历字符串  获取字符
	fmt.Println("遍历字符串:" + str + "，获取byte")
	for i := 0; i < len(str); i++ {
		fmt.Printf("%v(%c) ", str[i], str[i])
	}
	fmt.Println("")
	fmt.Println("遍历字符串:" + str + "，获取rune")
	for _, c := range str {
		fmt.Printf("%v(%c) ", c, c)
	}
	fmt.Println("")
}

// 转换字符串 将字符串转换为byte数组，并替换字符串中指定位置的字符为r
func convertByteString(str string, b byte, i int) {
	runeS2 := []byte(str)
	runeS2[i] = b
	fmt.Println(string(runeS2))
}

// 转换字符串 将字符串转换为rune数组，并替换字符串中指定位置的字符为r
func convertRuneString(str string, r rune, i int) {
	runeS2 := []rune(str)
	runeS2[i] = r
	fmt.Println(string(runeS2))
}
